A modern computer system may include one or more processor chips—a central processing unit (CPU) and/or graphics processing unit (GPU), for example. Each of the processor chips may include one or more processor cores configured to exchange data with system memory via a system bus. To enable faster exchange of data with the system memory, a processor chip may also include one or more memory caches—arrays of fast memory directly addressable by the processor cores. Before requesting data from the system memory, a processor core may first determine whether the requested data can be found in the memory cache. If not, a copy of that data may be written to the memory cache, so that subsequent requests for the same data may be served faster. If the data in the memory cache is altered, the altered data can be written back to the system memory at the appropriate address. In this manner, the various processor cores may access data in the system memory in a virtualized manner, which may be faster than repeated access to the same data over the system bus.
Directly or indirectly, operating-system and/or application software of a computer system may influence memory-cache operations. As a result, the extent to which the memory cache improves processor-chip performance may be enhanced or degraded based on the manner in which the software is programmed.